// 自定义指令
import Vue from 'vue'

Vue.directive('click-outside', {
    bind (el, binding, vnode) {
        function clickHandler(e) {
            // 是否点击元素本身
            if (el.contains(e.target)) return false

            // 指令是否是绑定函数
            if (binding.expression) {
                // 如果绑定则调用那个函数
                binding.value(e)
            }
        }
        el.__vueClickOutside__ = clickHandler
        document.addEventListener('click', clickHandler)

    },
    unbind (el, binding) {
        document.removeEventListener('click', el.__vueClickOutside__)
        delete el.__vueClickOutside__
    }
})
